package entidades;

import javax.swing.JOptionPane;

public class ListaSimples extends Controlador{
    
    //inserirComeco
    //inserirFim
    //removerComeco
    //removerFim
    //verificaElemento
    //consultaElemento
    //apagaEstrutura
    //tamanhoEstrutura
    
    //Inserindo em qualquer posição
    public void inserirPosicaoLista(int posicao, Object elemento){
        Celula novaCelula = new Celula();
        novaCelula.setElemento(elemento);
        if(tamanho == 0){
            inserirComeco(elemento);
        }else if(posicao > tamanho){
            JOptionPane.showMessageDialog(null, "Posição maior, elemento será inserido no final.");
            inserirFim(elemento);
        }else if(posicao == 1 || posicao == 0){
            JOptionPane.showMessageDialog(null, "Posição igual, elemento será inserido no começo.");
            inserirComeco(elemento);
        }else{
            Celula auxiliar = primeira;
            for (int i = 0; i < posicao - 1 ; i++) {
                auxiliar = auxiliar.getProximo();
            }
            novaCelula.setProximo(auxiliar.getProximo());
            auxiliar.setProximo(novaCelula);
            auxiliar = novaCelula;
            JOptionPane.showMessageDialog(null, "Elemento inserido na posição: " + posicao);
            tamanho++;
        }
    }
    
    //Removendo de qualquer posição
    public void removeElementoLista(String elemento){
        Celula remove = primeira.getProximo();
        Celula auxiliar = primeira;
        int contador = 0;
        while(contador < tamanho){
           if(elemento == remove.getElemento().toString()){
               if(remove.getProximo() == null){
                   ultima = auxiliar;
                   ultima.setProximo(null);
                   remove = null;
                   tamanho--;
                   break;
               }else{
                   auxiliar.setProximo(remove.getProximo());
                   remove.setProximo(null);
                   remove = null;
                   tamanho--;
                   break;
               }
           }
           contador++;
           remove = remove.getProximo();
           auxiliar = auxiliar.getProximo();
       }
    }    
}
